package com.jsmtr.rms.service;

import java.util.List;
import java.util.Map;

import com.jsmtr.rms.entity.DUserResume;
import com.jsmtr.rms.entity.HRGXUser;
import com.jsmtr.rms.entity.ProjectInfo;
import com.jsmtr.rms.entity.ProjectInfoFlow;
import com.jsmtr.rms.entity.UserResume;


public interface IDoGXService {


    /**
     * 获得下一招聘流程
     *
     * @param pid      招聘方案ID
     * @param deptcode 责任部门编码
     * @param fid      当前流程ID
     * @return 招聘流程
     * @throws Exception
     */
    ProjectInfoFlow getNextFlow(String pid, String deptcode, String fid) throws Exception;

    /**
     * 获得当前招聘流程
     *
     * @param pid      招聘方案ID
     * @param deptcode 责任部门编码
     * @param fid      当前流程ID
     * @return 招聘流程
     * @throws Exception
     */
    ProjectInfoFlow getCurrentFlow(String pid, String deptcode, String fid) throws Exception;

    /**
     * 获得当前招聘流程
     *
     * @param fid 当前流程ID
     * @return 招聘流程
     * @throws Exception
     */
    ProjectInfoFlow getCurrentFlow(String fid) throws Exception;

    /*********************简历筛选********************/
    /**
     * 获得简历分页数据
     *
     * @param page    当前页
     * @param perpage 每页显示数
     * @param resume  简历实体
     * @param param   条件
     * @return Map
     */
    Map<String, Object> getResumes(int page, int perpage, DUserResume resume, Map<String, Object> param) throws Exception;

    /**
     * 获得人员简历
     *
     * @param ids 简历ID集合
     * @return List<DUserResume>
     */
    List<DUserResume> getResumes(String[] ids) throws Exception;

    /**
     * 获得人员简历
     *
     * @param code 简历编号
     * @return List<Object   [   ]>
     */
    List<Object[]> getResumes(String code) throws Exception;

    /**
     * 简历信息
     *
     * @param id 简历ID
     * @return DUserResume
     */
    DUserResume getDUserResume(String id) throws Exception;

    /*********************面试********************/

    /**
     * 应聘者面试分页信息
     *
     * @param page    当前页
     * @param perpage 每页显示数
     * @param user    DUserResume
     * @param param   条件map
     * @return Map
     */
    Map<String, Object> getMSUsers(int page, int perpage, DUserResume user, Map<String, Object> param) throws Exception;

    /*********************体检********************/
    /**
     * 获得简历数据
     *
     * @param resume 简历实体
     * @param param  条件
     * @return Map
     */
    Map<String, Object> getTjResumes(DUserResume resume, Map<String, Object> param) throws Exception;


    /*********************岗位分配********************/

    /**
     * 应聘者分页信息
     *
     * @param page    当前页
     * @param perpage 每页显示数
     * @param user    DUserResume
     * @param param   条件map
     * @return Map
     */
    Map<String, Object> getPostUsers(int page, int perpage, DUserResume user, Map<String, Object> param) throws Exception;


    /*********************录入毕业生信息********************/

    /**
     * 获得高校应聘者信息
     *
     * @param pid 招聘方案ID
     * @return code 身份证号
     */
    HRGXUser getUser(String pid, String code) throws Exception;

    /**
     * 获得人员列表
     *
     * @param pid 招聘方案ID
     * @param ids 人员id集合
     * @return List<HRGXUser>
     */
    List<HRGXUser> getUsers(String pid, String[] ids) throws Exception;

    /*********************背景调查********************/

    /**
     * 获得简历信息
     *
     * @param page    当前页
     * @param perpage 每页显示数
     * @param resume  简历实体
     * @return Map
     */
    Map<String, Object> getUserResumes(int page, int perpage, UserResume resume) throws Exception;

    /**
     * 获得高校校招简历
     *
     * @param userid 用户ID
     * @param proid  招聘方案ID
     * @return DUserResume
     * @throws Exception
     */
    DUserResume getDResume(String userid, String proid) throws Exception;

    /**
     * 获得个人简历
     *
     * @param userid 用户ID
     * @return UserResume
     * @throws Exception
     */
    UserResume getResume(String userid) throws Exception;

    /**
     * 获得招聘方案
     *
     * @param id 招聘方案ID
     * @return ProjectInfo
     * @throws Exception
     */
    ProjectInfo getProject(String id) throws Exception;

    /**
     * 批量生成简历编号
     * @param count 数量
     * @return List<String>
     */
    //List<String> CreateResumeCodes(int count);

    /**
     * 推荐人员分页信息
     *
     * @param page    当前页
     * @param perpage 每页显示数
     * @param user    HRGXUser
     * @return Map
     */
    Map<String, Object> getUsers(int page, int perpage, HRGXUser user) throws Exception;

    /**
     * 获得高校应聘者信息
     *
     * @param id HRGXUser   ID
     * @return HRGXUser
     */
    HRGXUser getUser(String id) throws Exception;

    /**
     * 获得背景调查人数
     *
     * @param pid     招聘方案ID
     * @param zsstate 背景调查状态
     * @return 人数
     */
    int getZSUserCount(String pid, String zsstate);


    /*********************体检********************/

    /**
     * 获得体检时间列表
     *
     * @param pid 招聘方案ID
     * @return List<String>
     */
    List<String> getTjTimeList(String pid) throws Exception;

    /**
     * 获得体检人员列表
     *
     * @param pid    招聘方案ID
     * @param tjtime 体检时间
     * @return List<HRZZUser>
     */
    List<HRGXUser> getTjUsers(String pid, String tjtime) throws Exception;

    /**
     * 获得体检人数
     *
     * @param pid     招聘方案ID
     * @param tjstate 体检状态
     * @param zsstate 背景调查状态
     * @return 人数
     */
    int getTJUserCount(String pid, String tjstate, String zsstate);

    /*********************岗位分配********************/

    /**
     * 获得岗位分配人数
     *
     * @param pid     招聘方案ID
     * @param gwstate 岗位分配状态
     * @param tjstate 体检状态
     * @return 人数
     */
    int getGWUserCount(String pid, String gwstate, String tjstate);

    /**
     * 获得招聘岗位列表
     *
     * @param pid 招聘方案ID
     * @return List<Object   [   ]>
     */
    List<Object[]> getDemands(String pid) throws Exception;

    /**
     * 获得简历
     *
     * @param code 身份证号
     * @param pid  招聘方案ID
     * @return DUserResume
     */
    DUserResume getResume(String code, String pid) throws Exception;

    /*********************录用********************/
    /**
     * 获得报到时间列表
     *
     * @param pid 招聘方案ID
     * @return List<String>
     */
    List<String> getBdTimeList(String pid) throws Exception;

    /**
     * 获得报到人员列表
     *
     * @param pid    招聘方案ID
     * @param bdtime 报到时间
     * @return List<HRZZUser>
     */
    List<HRGXUser> getBdUsers(String pid, String bdtime) throws Exception;

    /**
     * 获得报到人数
     *
     * @param pid 招聘方案ID
     * @return List<Object   [   ]> Object[0]：人数，Object[1]：PROJECT_INFO_JOB 的ID
     */
    List<Object[]> getBdUserCount(String pid) throws Exception;

    Map<String, Object> getResumesMap(int page, int perpage, DUserResume resume, Map<String, Object> param) throws Exception;
}
